/*************************************************************
*
* M3D_TRF.CPP
*
* TRF CS operations
*************************************************************/
#include <m3d/m3d_stdafx.h>
#include <m3d.h>

/*************************************************************
* m3dMultiplyTrf ()
*
*************************************************************/
void m3dMultiplyTrf  (const m3dTRF* a, const m3dTRF* b, m3dTRF *c)
{
   m3dV tmp;
   a->rot.Transform(&b->tran, &tmp);
   m3dAddVector(&a->tran, &tmp, &c->tran);
   m3dMultiplyQuat(&a->rot, &b->rot, &c->rot);
}

/**************************************************************
* m3dTRF::Identity()
*
**************************************************************/
void m3dTRF::Identity (void)
{
   tran = m3dVZero;
   rot.Identity();
} 

/**************************************************************
* m3dTRF::ApplyTo()
*
**************************************************************/
void m3dTRF::ApplyTo (m3dMATR *m) const
{
   m->Translate(&tran, M3D_POST);
   rot.Transform(m, M3D_PRE);
}

//
// End-of-file M3D_TRF.CPP
//
